/**
 * 将多张 base64 图片拼接成一张图片（横向排列）
 * @param {Array} base64Images - base64 图片数组
 * @returns {Promise<string>} 拼接后的 base64 图片
 */
export async function concatenateImages(base64Images) {
  return new Promise((resolve, reject) => {
    if (!base64Images || base64Images.length === 0) {
      reject(new Error('图片数组不能为空'));
      return;
    }

    // 加载所有图片
    const images = [];
    let loadedCount = 0;
    const totalImages = base64Images.length;

    base64Images.forEach((base64, index) => {
      const img = new Image();
      img.onload = () => {
        loadedCount++;
        if (loadedCount === totalImages) {
          // 所有图片加载完成，开始拼接
          const canvas = document.createElement('canvas');
          const ctx = canvas.getContext('2d');
          
          // 计算总宽度和最大高度
          let totalWidth = 0;
          let maxHeight = 0;
          
          images.forEach(img => {
            totalWidth += img.width;
            maxHeight = Math.max(maxHeight, img.height);
          });
          
          canvas.width = totalWidth;
          canvas.height = maxHeight;
          
          // 绘制所有图片
          let currentX = 0;
          images.forEach(img => {
            ctx.drawImage(img, currentX, 0, img.width, img.height);
            currentX += img.width;
          });
          
          // 转换为 base64
          const result = canvas.toDataURL('image/jpeg', 0.9);
          resolve(result);
        }
      };
      
      img.onerror = () => {
        reject(new Error(`图片 ${index + 1} 加载失败`));
      };
      
      img.src = base64;
      images.push(img);
    });
  });
}

/**
 * 从 base64 字符串中提取纯 base64 内容（去掉 data:image/jpeg;base64, 前缀）
 * @param {string} dataUrl - data URL 格式的字符串
 * @returns {string} 纯 base64 字符串
 */
export function extractBase64(dataUrl) {
  if (!dataUrl) return '';
  
  // 如果是 data URL，提取 base64 部分
  const matches = dataUrl.match(/^data:image\/[^;]+;base64,(.+)$/);
  return matches ? matches[1] : dataUrl;
}

